/**
 * 通配符上界
 * 不能写入数据，只能读取数据
 */
class Food{

}
class Fruit extends Food{

}
class Apple extends Fruit{

}
class Banana extends Fruit{

}
class Message1<T>{ //设置泛型上界
    private T message;

    public T getMessage(){
        return message;
    }

    public void setMessage(T message){
        this.message = message;
    }
}
public class Test1 {
    public static void main(String[] args) {
        Message1<Apple> message = new Message1<>();
        message.setMessage(new Apple());
        fun(message);

        Message1<Banana> message1 = new Message1<>();
        message1.setMessage(new Banana());

    }
    //此时通配符“？“描述的是它可以接收任意类型，但是由于不能确定接收到的是哪个类型，所以无法修改，但是可以获取元素
    public static void fun(Message1<? extends Fruit> temp){
//        temp.setMessage(new Apple()); 无法修改
        Fruit b = temp.getMessage();
        System.out.println(b);

        System.out.println(temp.getMessage());
    }
}
